OBJS = Attribut.o ContentElement.o Data.o Element.o EmptyElement.o Item.o XMLArbre.o main.o xml.tab.o lex.xml_.o HTMLArbre.o
CC = g++
DEBUG = -g -DYYDEBUG=1
CFLAGS = -Wall -c $(DEBUG)
LFLAGS = -Wall $(DEBUG)

XMLArbre : $(OBJS) *.l *.y makefile
	$(CC) $(LFLAGS) $(OBJS) -o XMLArbre

Attribut.o : Attribut.h Attribut.cpp 
	$(CC) $(CFLAGS) Attribut.cpp

ContentElement.o : ContentElement.h ContentElement.cpp Element.h
	$(CC) $(CFLAGS) ContentElement.cpp

Data.o : Data.h Data.cpp Item.h 
	$(CC) $(CFLAGS) Data.cpp

Element.o : Element.h Element.cpp Attribut.h Item.h
	$(CC) $(CFLAGS) Element.cpp

EmptyElement.o : EmptyElement.h EmptyElement.cpp Element.h Item.h
	$(CC) $(CFLAGS) EmptyElement.cpp

Item.o : Item.h Item.cpp
	$(CC) $(CFLAGS) Item.cpp

HTMLArbre.o : HTMLArbre.h HTMLArbre.cpp XMLArbre.h
	$(CC) $(CFLAGS) HTMLArbre.cpp

XMLArbre.o : XMLArbre.h XMLArbre.cpp Element.h Item.h EmptyElement.h
	$(CC) $(CFLAGS) XMLArbre.cpp

xml.tab.o : xml.y
	bison -pxml_ --debug --verbose --defines=xml_.tab.h xml.y
	$(CC) $(CFLAGS) xml.tab.c

lex.xml_.o : xml.l xml_.tab.h
	flex  -Pxml_  xml.l
	$(CC) $(CFLAGS) lex.xml_.c

main.o : main.cpp XMLArbre.h Element.h Item.h EmptyElement.h Attribut.h ContentElement.h Data.h HTMLArbre.h
	$(CC) $(CFLAGS) main.cpp

clean:
	-rm -rf *.tab.c lex.*.c *.tab.h *.output
	-rm -rf *.o *~ XMLArbre

